1. Technical Field
The present disclosure relates to techniques for manipulating a virtual tool in three-dimensional (3-D) space, and more specifically to techniques for manipulating a virtual tool in 3-D space with a pointing device that only captures motion in two-dimensions.
2. Background Information
Three-dimensional (3-D) laser scanners are increasingly being used to accurately and quickly capture the shape of physical subjects, such as discrete objects, portions of structures, terrain, or other parts of the physical environment. Such scanners capture a point cloud of geometric samples on the surface of the subject. To accomplish this task, a 3-D laser scanner typically emits some form of coherent light and detects its reflection from the surface of the physical subject. Some 3-D laser scanners rely on time-of-flight. In a time-of-flight 3-D laser scanner, a laser emits pulses of coherent light in a grid-like pattern to scan the physical subject. A laser rangefinder finds the distance to the surface of the physical subject for each pulse of coherent light by timing the round-trip-time of the pulse of light, from its emission, to its reflection back to the laser rangefinder. Other 3-D laser scanners rely on some form of triangulation Like a time-of-flight 3-D laser scanner, a triangulation 3-D laser scanner also emits coherent light in a grid-like pattern to scan the physical subject. However, rather than measure time-of flight, an offset camera is employed to look for the location where the coherent light strikes the subject (i.e. a laser dot). Depending on how far away the coherent light strikes the surface, the laser dot appears at different places in the camera's field of view, which can be used in a triangulation calculation to determine distance.
In either case, a point cloud of geometric samples is produced by repeated application of the technique, where each point of the point cloud is associated with a particular x-axis, y-axis and z-axis position on the surface of the physical subject. The points of the point cloud can be used to extrapolate the shape of the physical subject, which may be translated into a more readily used form through a reconstruction process. In reconstruction, the points of the point cloud are often used to construct a vector-based model, where the subject is represented by vector elements based on mathematical formulas, rather than on a large number of discrete points. Creating a vector-based model from a point cloud is generally a difficult process that requires at least some user-involvement in selecting which points of the point cloud should be used as the basis for vector elements. A user may be shown a rendition of the point cloud on a display of a computer system. He or she may then be called upon to “draw” vector elements (e.g., lines, polygons, etc.) using points of the point cloud as a guide. To “draw” vector elements, a user may be required to select and “snap” to a first point of the point cloud. The user may then select one or more other points that are “snapped” to. Collectively, the “snapped” to points may define the bounds of the vector element, with the x-axis, y-axis and z-axis position in 3-D space of the “snapped” to points assigned to the relevant portions of the vector element.
Unfortunately, there are a number of issues that complicate reconstruction. When displayed on a display screen, a point cloud typically appears completely flat. While each point in the point cloud may represent data at a different distance in 3-D space from a viewing position in the 3-D space, when displayed on a display screen, most systems show the points without perspective effects, and therefore they are all represented by dots of the same size. Absent visual depth information, a user is generally unable to discern how far away from the viewing position a point is in 3-D space, without time-consuming additional operations, and therefore may have difficulty selecting the appropriate points.
Further, point clouds are often discontinuous. Points that visually appear proximate to each other on a display screen may not be part of the same surface in 3-D space, but may instead be derived from surfaces in that simply happen to be aligned with respect to the viewing position in 3-D space. A point from a deeper surface may be shown next to a point from a closer surface, simply because those surfaces “overlap” when viewed from a certain perspective. Accordingly, a user generally is unable to definitively determine whether two points are part of the same surface or are parts of different surfaces, without time-consuming additional operations, and therefore may have difficulty selecting the appropriate points.
Finally, the points of a point cloud are arranged in 3-D space while the typical pointing device (e.g., mouse, touchpad, trackball, etc.) provided with electronic devices only captures motion in two-dimensions (herein referred to as a “2-D pointing device”). Even if a user knows the appropriate point to select in a point cloud, the user may be hindered from selecting the point using a 2-D pointing device due to the lack of an effective way to navigate in 3-D space. While a number of specialty 3-D pointing devices (e.g., 3-D pens, gyroscopic mice, etc.) are available that may capture motion in three dimensions, such specialty pointing devices are not widely deployed.
Accordingly, there is a need for improved techniques that address the shortcomings of the prior art.